import { atom, selector } from "recoil";

// 创建一个待办事项的初始化状态
const todoListState = atom({
  key: "todoListState",
  default: [
    {
      content: "去超市购物🛍️",
      isCompleted: false,
      time: 1291088702174,
    },
    {
      content: "学习 Go 语言",
      isCompleted: false,
      time: 1493088702174,
    },
    {
      content: "了解 Bun 相关的信息",
      isCompleted: true,
      time: 1592088502174,
    },
    {
      content: "准备 Bun 相关的公开课",
      isCompleted: false,
      time: 1695088702174,
    },
  ],
});

// 创建一个 selecor 计算属性用于计算时间
// 从而显示标准格式的时间
const timeFormatedTodoListState = selector({
  key: "timeFormatedTodoListState",
  get: ({ get }) => {
    // 通过 get 方法拿到所有的待办事项的状态数据
    const todoList = get(todoListState);
    // 接下来在该状态数据的基础上进行一个二次计算
    return todoList.map((item) => {
      const time = new Date(item.time);
      const year = time.getFullYear(); // 年
      const month = time.getMonth() + 1; // 月
      const date = time.getDate(); // 日
      const hour = time.getHours(); // 时
      const minute = time.getMinutes(); // 分
      return {
        ...item,
        time: `${year}/${month}/${date} ${hour}:${minute}`,
      };
    });
  },
});

export { todoListState, timeFormatedTodoListState };
